import axios from "axios";
import VueRouter from "vue-router";
import router from "../router"
import elementUI from "element-ui"
import nprogress from "nprogress"

let http =  axios.create ({//
    baseURL:"/api",//配置默认地址
    withCredentials:true,//将会携带认证后端
    timeout:1000*10,//请求超时设置，如果超过了10秒，那么就会进入reject

})
// 请求拦截
http.interceptors.request.use(function(config) {
    nprogress.start()
    let token = localStorage.getItem("xdw-token");
    // console.log(token)
    // console.log(config);
    // 由于请求数据的时候需要携带token
    // 但是 登入验证码 效验验证码不需要token
    let rowPath = ["/users/login","/users/getCaptcha","/users/verifyCaptcha"]
    // config.url 可以获取当前被拦截的请求地址
    // console.log(fonfig)
    if(rowPath.includes(config.url)) {
        return config //放行
    } else {
        // 从本地存储token取出来,携带给其他请求
        // config.headers['authorization']
        let token = localStorage.getItem("xdw-token") || ""
        // console.log(token)
        config.headers['authorization'] = token
        return config //放行
    }
})//请求拦截器,可以拦截所有的请求，然后添加需要的逻辑

// console.log(elementUI);

// 响应拦截器
http.interceptors.response.use(function(config) {
    nprogress.done()
    // 进行响应拦截
    // 当响应回来的状态码时 10022 的时候 需要跳转到登录页，清除token
    // console.log(config);
    if(config.data.code === "10022" || config.data.code === "1004"){
        router.push("/login")
        localStorage.removeItem('xdw-token')
        localStorage.removeItem("xdw-userInfo")
        // 提示用户登录过期
        elementUI.Message.error("登录过期，请重新登录")
    }
    return config;
})

export default http;